import { RootThunkAction } from '@/types/store'
import { clearToken, http, setToken } from '@/utils'
// import type 引入数据类型type（带不带都可）
import type { LoginResponse } from '@/types/data'

// login 函数的参数类型
type LoginParams = { mobile: string; code: string }
// // login 接口的响应类型
// type LoginResponse = {
//   message: string
//   data: Token
// }
// 登录
export const login = (values: LoginParams): RootThunkAction => {
  return async (dispatch) => {
    // 发送请求
    const res: LoginResponse = await http.post('/authorizations', values)
    // 设置本地token
    setToken(res.data)
    // 分发 action 将 token 保存到 redux state 中
    dispatch({ type: 'login/token', payload: res.data })
  }
}

// 获取验证码
export const getCode = (mobile: string) => {
  return async () => {
    await http.get(`/sms/codes/${mobile}`)

    // 注意：验证码是发送到手机上的，因此，不需要更新Redux状态
  }
}

// 退出登录
export const logout = (): RootThunkAction => {
  return async (dispatch) => {
    dispatch({ type: 'login/logout' })
    clearToken()
  }
}
